class CompoundContext
!!!196866.cpp!!!	CompoundContext(inout context : IContext)


!!!196994.cpp!!!	~CompoundContext()


!!!197122.cpp!!!	identExists(in ident : Ident) : bool


	bool ret = IContextDecorator::identExists(ident);

	if( !ret )
	{
		//check if it exists in this context.
		if(m_context.find(ident) != m_context.end() )
		{
			ret = true;
		}

	}
	return ret;

!!!197250.cpp!!!	addIdent(in type : IType, in ident : Ident) : bool

	bool ret = false;
	//here we add the ident to this context.
	// though we need to check that its not part of any other context.

	if( !identExists(ident) ) //check that it doesnt exists
	{
		IType* typPtr = type.clone();
		std::pair< CONTEXT_MAP::iterator , bool > insRet = m_context.insert(CONTEXT_MAP::value_type(ident,typPtr));
		ret = insRet.second;
	}
	return ret;
!!!197378.cpp!!!	removeIdent(in ident : Ident) : bool

	//Remove it from the parent context
	bool ret = IContextDecorator::removeIdent(ident);

	//remove from this context.
	CONTEXT_MAP::iterator it = m_context.find(ident);

	if(it != m_context.end() )
	{
		delete (it->second);
		it->second = NULL;
		m_context.erase (it);
		ret = true;
	}


	return ret;
!!!197506.cpp!!!	findType(in ident : Ident) : IType

	IType* type = IContextDecorator::findType(ident);

	//If  null then it should most certainly be located here, if it exists that is ....
	if( type == NULL )
	{
		CONTEXT_MAP::iterator it = m_context.find(ident);

		if( it != m_context.end() )
		{
			type = it->second->clone(); //Clone the return,
		}


	}
	// in the above we checked if the above context.
	// now we check in the compound context, which has precedence in this case.

	return type;

!!!197634.cpp!!!	getAllOfType(inout type : IType, inout list : IContext::TypeList) : void

	//Checks all the previous contexts if existing there.
	IContextDecorator::getAllOfType(type,list);
	TypeVisitorHelper argTypeVisitorHelper(type);
	TypeVisitorHelper::TYPE_ENUM argType = argTypeVisitorHelper.getType();
	CONTEXT_MAP::const_iterator iter = m_context.begin();
	for(;iter != m_context.end(); ++iter)
	{
		TypeVisitorHelper mapType(iter->second);

		if( argType == mapType.getType())
		{
			list.push_back(iter->first);
		}
	}
